package com.shenzhenai.module_pattern.demo8;

import java.lang.reflect.Constructor;

/**
 * @author huangzehui
 * @date 2025/9/3 13:53 周三
 * @description 测试使用反射破坏单例模式
 */
public class Client {


    public static void main(String[] args) throws Exception {
        // 1. 获取 Singleton 的字节码对象
        Class<Singleton> clazz = Singleton.class;

        // 2. 获取无参构造方法对象
        Constructor cons = clazz.getDeclaredConstructor();

        // 3. 取消访问检查
        cons.setAccessible(true);

        // 4. 创建 Singleton 对象
        Singleton s1 = (Singleton) cons.newInstance();
        Singleton s2 = (Singleton) cons.newInstance();

        System.out.println(s1 == s2); // 如果返回的是true，说明并没有破坏单例模式，如果是false，说明破坏了单例模式

    }

}
